package gui.edit_objects;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.*;

import objects.Pays;

import bdd_handler.PaysDAO;
import bdd_handler.bdd;


public class Edit_Pays extends JFrame implements ActionListener{

	private static final long serialVersionUID = 1L;

	private JFrame parent;

	private PaysDAO pDAO;
	private Pays p;
	private JTextField pays_nom, pays_code_tel, pays_nb_digits_tel;
	private boolean mknew;
	private JButton valider, annuler;

	public Edit_Pays(JFrame parent, Pays pays){
		//recuperation de la fenetre parente
		this.parent=parent;
		this.parent.setVisible(false);

		//construction de la fenetre
		this.p=pays;
		if(p.getId_pays()==-1)
			mknew=true;
		else
			mknew=false;
		if(mknew)
			this.setTitle("Nouveau Pays");
		else
			this.setTitle("Editer Pays");
		this.setSize(500,200);
		this.setResizable(false);
		JPanel pan=new JPanel();
		pan.setLayout(null);
		this.setContentPane(pan);

		//creation des DAOs
		bdd db=new bdd();
		pDAO=new PaysDAO(db.getConnection());

		//creation objets internes
		pays_nom=new JTextField(p.getNom());
		pays_code_tel=new JTextField(p.getCode_tel());
		pays_nb_digits_tel=new JTextField(""+p.getNb_digit_tel());
		valider=new JButton("valider");
		valider.addActionListener(this);
		annuler=new JButton("annuler");
		annuler.addActionListener(this);
		JLabel lbl_pays=new JLabel("Nom du pays");
		JLabel lbl_code_tel=new JLabel("Code téléphonique du pays");
		JLabel lbl_nb_digit_tel=new JLabel("Nombre de chiffre du numéro");

		//placer les objets
		pan.add(lbl_pays);
		lbl_pays.setBounds(10,10,200,20);
		pan.add(lbl_code_tel);
		lbl_code_tel.setBounds(10, 40, 200, 20);
		pan.add(lbl_nb_digit_tel);
		lbl_nb_digit_tel.setBounds(10, 70, 200, 20);
		pan.add(pays_nom);
		pays_nom.setBounds(220, 10, 200, 20);
		pan.add(pays_code_tel);
		pays_code_tel.setBounds(220, 40, 200, 20);
		pan.add(pays_nb_digits_tel);
		pays_nb_digits_tel.setBounds(220, 70, 200, 20);
		pan.add(annuler);
		annuler.setBounds(10, 100, 90, 20);
		pan.add(valider);
		valider.setBounds(110, 100, 90, 20);

		//action fermeture fenetre
		this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		this.addWindowListener(
				new WindowAdapter(){
					public void windowClosing(WindowEvent e){
						close();

					}
				}
				);
		//afficher la fenetre
		this.setVisible(true);
	}

	private void close(){
		this.parent.setVisible(true);
		this.dispose();
	}

	private void send()
	{
		p.setNom(pays_nom.getText());
		p.setCode_tel(pays_code_tel.getText());
		p.setNb_digit_tel(Integer.parseInt(pays_nb_digits_tel.getText()));
		if(mknew)
			pDAO.create(p);
		else
			pDAO.update(p);
	}

	private boolean check()
	{
		if(pays_nom.getText().equals(""))
		{
			JOptionPane.showMessageDialog(this.getContentPane(), "le nom du pays n'a pas été renseigné", "Oh zut!", JOptionPane.ERROR_MESSAGE);
			return false;
		}
		try
		{
			Integer.parseInt(pays_code_tel.getText());
		}
		catch(NumberFormatException e) {
			JOptionPane.showMessageDialog(this.getContentPane(), "le code téléphonique du pays n'est pas un entier", "Oh zut!", JOptionPane.ERROR_MESSAGE);
			return false;
		}
		if(pays_code_tel.getText().length() != 4)
		{
			JOptionPane.showMessageDialog(this.getContentPane(), "le code téléphonique du pays doit être composé de 4 chiffres", "Oh zut!", JOptionPane.ERROR_MESSAGE);
			return false;
		}
		try
		{
			Integer.parseInt(pays_nb_digits_tel.getText());
		}
		catch(NumberFormatException e) {
			JOptionPane.showMessageDialog(this.getContentPane(), "le nombre de chiffres du numéro n'est pas un entier", "Oh zut!", JOptionPane.ERROR_MESSAGE);
			return false;
		}
		return true;
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		Object source=e.getSource();

		if(source==annuler)
		{
			close();
		}
		if(source==valider)
		{
			if(check())
			{
				send();
				close();
			}
		}

	}

}
